module exportd;
import hip.util.reflection; //ExportD
import hip.graphics.g2d.animation;
import hip.game.utils;
import hip.audio;
import hip.hiprenderer.renderer;
import hip.assetmanager;
import hip.systems.timer_manager;
import hip.filesystem.hipfs;
import hip.network;

import std.traits:ReturnType;

mixin HipExportDFunctions!(hip.graphics.g2d.animation);
mixin HipExportDFunctions!(hip.game.utils);
mixin HipExportDFunctions!(hip.assetmanager);
mixin HipExportDFunctions!(hip.systems.timer_manager);


///ExportD doesn't work on function/delegate
alias AssetDelegate = void delegate(HipAsset);
export extern(System) static void HipAssetManager_addOnCompleteHandler(IHipAssetLoadTask task, AssetDelegate onComplete)
{
    HipAssetManager.addOnCompleteHandler(task, onComplete);
}


void referenceExported()
{
    auto a = &getNetworkInterface;
    auto b = &HipFileSystemAPI;
    auto c = &HipAudioPlayerAPI;
    auto d = &HipRendererAPI;
}